import {defineStore} from 'pinia'
import tool from '@/utils/tool'

const defaultTag = [{name: 'dashboard', title: '仪表盘', path: '/dashboard', affix: true}]
const useTagStore = defineStore('tag', {
    state: () => ({
        tags: (!tool.local.get('tags') || tool.local.get('tags').length === 0) ? defaultTag : tool.local.get('tags')
    }),

    getters: {
        getState() {
            return {...this.$state}
        },
    },

    actions: {

        addTag(tag) {
            const target = this.tags.find(item => item.path === tag.path)
            if (!target && tag.path) {
                this.tags.push(tag)
            }
            this.updateTagsToLocal()
        },

        removeTag(tag) {
            let index = 0
            this.tags.map((item, idx) => {
                if (item.path !== tag.path || item.affix) {
                    return
                }
                this.tags.splice(idx, 1)
                index = idx - 1
            })
            this.updateTagsToLocal()
            return this.tags[index]
        },

        updateTag(tag) {
            this.tags.map(item => {
                if (item.path == tag.path) {
                    item = Object.assign(item, tag)
                }
            })
            this.updateTagsToLocal()
        },

        updateTagTitle(path, title) {
            this.tags.map(item => {
                if (item.path == path) {
                    item.customTitle = title
                }
            })
            this.updateTagsToLocal()
        },

        updateTagsToLocal() {
            tool.local.set('tags', this.tags)
        },

        clearTags() {
            this.tags = defaultTag
            tool.local.set('tags', defaultTag)
        },
    },
})

export default useTagStore